/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DataAccessObject;

import BusinessEntity.BE_Personal;
import BusinessEntity.BE_Rol;
import BusinessEntity.BE_Usuario;
import Comun.Conexion;
import java.sql.*;
import java.util.ArrayList;

/**
 *
 * @author 
 */
public class DA_Usuario{
    
    Conexion con;
    ResultSet rs;
    CallableStatement declaracion;

    private static DA_Usuario pinstancia=null;

    public static DA_Usuario obtenerInstancia()
    {
      if (pinstancia==null)
      {
          pinstancia=new DA_Usuario();
      }
      return pinstancia;
    }

    public boolean loginUser(String strUsr, String strPass) throws InstantiationException, IllegalAccessException{

        con = Conexion.ObtenerInstancia();

        int respuesta = 0;
        try {
            String strPassCrypted = strPass;//Funciones_Comunes.encriptarPass(strPass);
            con.IniciarConexion();
            String strProcedure = "{call validacionLogin(?, ?, ?) }";
            declaracion = con.preparaLlamada(strProcedure);
            declaracion.setString(1, strUsr);
            declaracion.setString(2, strPassCrypted);
            declaracion.registerOutParameter(3, java.sql.Types.INTEGER);
            declaracion.execute();
            respuesta = declaracion.getInt(3);

        } catch (SQLException exception) {
            System.out.println("error: " + exception.getMessage());
            exception.printStackTrace();
        } finally {
            con.CerrarConexion();
        }
        return (respuesta != 0);
      
}

        public BE_Personal obtenerPersonal(String strUsuario) throws InstantiationException, IllegalAccessException, SQLException{

        con = Conexion.ObtenerInstancia();
        BE_Personal objBEPersonal = new BE_Personal();                

        try {
            con.IniciarConexion();
            String strProcedure = "{call obtenerPersonal(?) }";
            declaracion = con.preparaLlamada(strProcedure);
            declaracion.setString(1, strUsuario);
            declaracion.execute();
            rs = declaracion.getResultSet();   
            ArrayList<BE_Personal> aobjBEPersonal = new ArrayList<BE_Personal>();
            BE_Personal objBEPersonalAsignado = new BE_Personal();
            while(rs.next()){
                
                objBEPersonalAsignado.setIdPersonal(rs.getInt("codPer"));
                objBEPersonalAsignado.setStrNombre(rs.getString("Nombre"));
                objBEPersonalAsignado.setStrApePat(rs.getString("ApePaterno"));
                objBEPersonalAsignado.setStrApeMat(rs.getString("ApeMaterno"));
                
                BE_Rol objBERol = new BE_Rol();
                objBERol.setIdRol(rs.getInt("codRol"));
                objBERol.setStrDescripcion(rs.getString("descRol"));
                objBEPersonalAsignado.setObjBERol(objBERol);
                
                BE_Usuario objBEUsuario = new BE_Usuario();
                objBEUsuario.setIdUsuario(rs.getInt("usuario"));
                objBEUsuario.setStrLogin(rs.getString("login"));
                objBEPersonalAsignado.setObjBEUsuario(objBEUsuario);  
                
                aobjBEPersonal.add(objBEPersonalAsignado);
            }

            objBEPersonal = aobjBEPersonal.get(0);
        } catch (SQLException exception) {
            System.out.println("error: " + exception.getMessage());
            exception.printStackTrace();
        } finally {
            
            con.CerrarConexion();
 
            
        }
        
        return objBEPersonal;
      
}
}
